home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
com
/
computer
/
casio_st
/
casiost2.lst
< prev
next >
Wrap
File List
|
1994-03-01
|
13KB
|
616 lines
$e
$i+
$s<
$m 100000
'
' Liaison Casio Fx 850p - Atari St (sources GFA 3.5)
' (c) William Saint-Cricq
'
' Diffusion libre de ces sources sauf
' pour utilisation commerciale dans quel
' cas il faudra demand l'autorisation de
' l'auteur.
' Toutes modifications du programme est
' autorises si le nom de l'auteur est
' bien respect.
'
' Merci.
'
CLEAR
version$="2.02"
dat$="Fvrier 1992"
'
HIDEM
'
IF XBIOS(4)<>2
ALERT 3,"|Uniquement en monochrome ",1," SORRY ",ret%
END
ENDIF
IF FRE(0)-32000<=0
ALERT 3,"|Pas assez de mmoire",0," OK ",ret%
END
ENDIF
'
' RESERVE FRE(0)-32000
@charge_ecran
'
IF fin!
END
ENDIF
'
@init
'
ON MENU BUTTON 1,1,1 GOSUB gere_souris
ON MENU KEY GOSUB gere_clavier
DO
ON MENU
EXIT IF fin!
LOOP
END
'
' ********************** routines principales
> PROCEDURE charge_ecran
INLINE adr_doc%,32000
' adr_doc=MALLOC(32000)
' IF adr_doc=0
' PRINT "Pas assez de mmoire !"
' @fin
' ELSE
' BLOAD "DOC.PIC",adr_doc
' ENDIF
INLINE adr_som%,32000
' adr_som=MALLOC(32000)
' IF adr_som=0
' PRINT "Pas assez de mmoire !"
' @fin
' ELSE
' BLOAD "SOMMAIRE.PIC",adr_som
' ENDIF
RETURN
> PROCEDURE init
' Mise en place tampon Rs232 avec sauvegarde de l'ancien
' Ancien Tampon
ad%=XBIOS(14,0)
initin%=LPEEK(ad%)
longin%=DPEEK(ad%)
ad%=XBIOS(14,0)+14
initout%=LPEEK(ad%)
longout%=DPEEK(ad%)
' Nouveau Tampon
xxxin%=GEMDOS(&H48,L:256) ! Malloc
xbios14in(xxxin%,256) ! Buffer d'entre
xxxout%=GEMDOS(&H48,L:16) ! Malloc
xbios14out(xxxout%,16) ! Buffer de sortie
'
'
erreur!=FALSE
fin!=FALSE
ok!=FALSE
CLR programme$ ! variable o il y a le programme CASIO
~XBIOS(&H21,&X100)
@aff_som
nom_prog$="CASIO.CAS"
prog$="CASIO.CAS"
nbe_octets$="0"
nbe_lignes$="0"
statut$="Attente..."
vitesse$="1200"
no_serie$=@no_serie$
' IF chemin$=""
' chemin$="*.*"
' ENDIF
@info_memoire
@affiche_info
SHOWM
DEFMOUSE 3
RETURN
> PROCEDURE xbios14out(adr%,l%)
LOCAL ad%
ad%=XBIOS(14,0)+14
SLPOKE ad%,adr%
SDPOKE ad%+4,l%
SLPOKE ad%+6,0
PAUSE 10
RETURN
> PROCEDURE xbios14in(adr%,l%)
LOCAL ad%
ad%=XBIOS(14,0)
SLPOKE ad%,adr%
SDPOKE ad%+4,l%
SLPOKE ad%+6,0
PAUSE 10
RETURN
> FUNCTION no_serie$
LOCAL a$,b$,a%
a$=" WTel"
RETURN a$
ENDFUNC
> PROCEDURE aff_som
BMOVE adr_som%,XBIOS(2),32000
@ligne(0)
RETURN
> PROCEDURE aff_doc
BMOVE adr_doc%,XBIOS(2),32000
RETURN
> PROCEDURE info_memoire
mem_ram$=STR$(FRE(0))+" octets"
mem_disk$=STR$(DFREE(0))+" octets"
disk%=GEMDOS(25)
SELECT disk%
CASE 0
disk$="A"
CASE 1
disk$="B"
CASE 2
disk$="C"
CASE 3
disk$="D"
CASE 4
disk$="E"
CASE 5
disk$="F"
CASE 6
disk$="G"
CASE 7
disk$="H"
CASE 8
disk$="I"
CASE 9
disk$="J"
CASE 10
disk$="K"
CASE 11
disk$="L"
CASE 12
disk$="M"
DEFAULT
disk$="?"
ENDSELECT
RETURN
> PROCEDURE affiche_info
DEFTEXT 1,,,13
TEXT 480,144,prog$ !nom du programme
TEXT 480,161,nbe_octets$ !nombre d'octets
TEXT 480,178,nbe_lignes$ !nombre de lignes
TEXT 400,212,statut$ !Satut
TEXT 456,246,mem_ram$ !mmoire libre
TEXT 456,263,mem_disk$ !disk free
TEXT 456,280,disk$ !disk utilis
TEXT 488,314,vitesse$ !vitesse de transfert
DEFTEXT 1,0,0,4
TEXT 136,344,no_serie$
DEFTEXT 1,,,6
TEXT 99,300,"Version "+version$
TEXT 99,310,dat$
DEFTEXT 1,,,13
RETURN
> PROCEDURE config
ALERT 0,"|Non disponible |sur cette version ",1," OK ",ret%
RETURN
> PROCEDURE gere_souris
x=MOUSEX
y=MOUSEY
' TEXT 100,100,STR$(x)+" "+STR$(y)
IF x>13 AND x<81 AND y>19 AND y<64
@loading
ok!=TRUE
ENDIF
IF x>105 AND x<175 AND y>19 AND y<64
@saving
ok!=TRUE
ENDIF
IF x>199 AND x<240 AND y>19 AND y<64
@affiche_prog
ok!=TRUE
ENDIF
IF x>264 AND x<366 AND y>19 AND y<64
@imprimer
ok!=TRUE
ENDIF
IF x>385 AND x<436 AND y>19 AND y<64
@charge_prog
ok!=TRUE
ENDIF
IF x>459 AND x<510 AND y>19 AND y<64
@sauve_prog
ok!=TRUE
ENDIF
IF x>519 AND x<623 AND y>21 AND y<58
@fin
ENDIF
'
IF ok!
@aff_som
statut$="Attente..."
@affiche_info
ok!=FALSE
ENDIF
'
RETURN
> PROCEDURE gere_clavier
clavier=SHR(MENU(14),8)
SELECT clavier
CASE &H3B
@loading
ok!=TRUE
CASE &H3C
@saving
ok!=TRUE
CASE &H3D
@affiche_prog
ok!=TRUE
CASE &H3E
@imprimer
ok!=TRUE
CASE &H3F
@charge_prog
ok!=TRUE
CASE &H40
@sauve_prog
ok!=TRUE
CASE &H44
@fin
CASE &H62
@aide
CASE &H61
@config
ENDSELECT
'
IF ok!
@aff_som
statut$="Attente..."
@affiche_info
ok!=FALSE
ENDIF
'
RETURN
'
' ********************** instructions
> PROCEDURE loading
LOCAL v%,choix%,a$,a!,temps%,i%
CLR programme$,nbe_lignes$,nbe_octets$
mem_ram$=STR$(FRE(0))+" octets"
statut$="Casio Atari"
@aff_som
@affiche_info
ALERT 0," Vitesse de transfert | Casio Atari ?",3," 600 | 1200 | 2400 ",choix%
IF choix%=1
vitesse$=" 600"
v%=8
ELSE IF choix%=2
vitesse$="1200"
v%=7
ELSE
vitesse$="2400"
v%=4
ENDIF
@affiche_info
~XBIOS(15,v%,3,142,-1,-1,-1)
' auxin_base%=XBIOS(14,0) !
' IF DPEEK(auxin_base%+4)<5120 !
' auxin_buffer%=MALLOC(5120) !toute cette partie (lignes 42 @ 53)
' IF auxin_buffer%>0 !cree un nouveau tampon pour
' PRINT "nouveau buffer" !l'entree des donnes de la prise
' LPOKE (auxin_base%),auxin_buffer% !serie. Si le tampon existant est
' DPOKE (auxin_base%+4),5120 !inferieur a 5Ko, alors on en cree
' ELSE !un nouveau
' PRINT "Pas assez de memoire pour le buffer AUXIN"
' END !
' ENDIF !
' ENDIF !
WHILE INP?(1)<>FALSE
a%=INP(1)
WEND
ALERT 0," Tapez SAVE ""COM0:x |x:3 (600),4 (1200),5 (2400) ",1," OK | NON ",ret%
CLR t$
IF ret%=1
DO
a$=INPAUX$
t$=INKEY$
IF a$<>""
programme$=programme$+a$
z%=LEN(programme$)
TEXT 480,161,STR$(z%) !nombre d'octets
@ligne(FRAC(z%/512))
a!=FALSE
ELSE IF a!=FALSE
temps%=TIMER
a!=TRUE
ENDIF
LOOP UNTIL (TIMER-temps%)>200*5*2 OR t$=CHR$(27)
FOR i%=1 TO LEN(programme$)
IF MID$(programme$,i%,1)=CHR$(10)
nbe_lignes$=STR$(VAL(nbe_lignes$)+1)
ENDIF
NEXT i%
nbe_octets$=STR$(LEN(programme$))
ENDIF
RETURN
> PROCEDURE saving
LOCAL choix%,i%,v%
mem_ram$=STR$(FRE(0))+" octets"
statut$="Atari Casio"
@aff_som
ALERT 0," Vitesse de transfert | Atari Casio ?",3," 600 | 1200 | 2400 ",choix%
IF choix%=1
vitesse$=" 600"
v%=8
ELSE IF choix%=2
vitesse$="1200"
v%=7
ELSE
vitesse$="2400"
v%=4
ENDIF
@affiche_info
~XBIOS(15,v%,3,142,-1,-1,-1)
' auxin_base%=XBIOS(14,0) !
' IF DPEEK(auxin_base%+4)<5120 !
' auxin_buffer%=MALLOC(5120) !toute cette partie (lignes 42 @ 53)
' IF auxin_buffer%>0 !cree un nouveau tampon pour
' PRINT "nouveau buffer" !l'entree des donnes de la prise
' LPOKE (auxin_base%),auxin_buffer% !serie. Si le tampon existant est
' DPOKE (auxin_base%+4),5120 !inferieur a 5Ko, alors on en cree
' ELSE !un nouveau
' PRINT "Pas assez de memoire pour le buffer AUXIN"
' END !
' ENDIF !
' ENDIF !
WHILE INP?(1)<>FALSE
a%=INP(1)
WEND
ALERT 0," Tapez LOAD ""COM0:x |x:3 (600),4 (1200),5 (2400) ",1," OK | NON ",ret%
IF ret%=1
PAUSE 200
IF OUT?(1)=FALSE
ALERT 1," Casio non connect ??? ",1," OK ",ret%
ELSE
FOR i%=1 TO LEN(programme$)
OUT 1,ASC(MID$(programme$,i%,1))
@ligne(i%/LEN(programme$))
EXIT IF INKEY$=CHR$(27)
NEXT i%
ENDIF
ENDIF
PAUSE 200
RETURN
> PROCEDURE ligne(pourcentage)
GRAPHMODE 1
DEFFILL 1,2,2
IF pourcentage<=0
PBOX 344,320,576,336
ENDIF
IF pourcentage<=1
IF pourcentage>0
DEFFILL 1,2,4
PBOX 346,322,346+228*pourcentage,334
ENDIF
ENDIF
RETURN
'
> PROCEDURE imprimer
LOCAL choix%,a$,y,i,x,p
statut$="Impression tampon"
@aff_som
@affiche_info
ALERT 1," Imprimante alume ? ",1,"OUI|NON",choix%
IF choix%=1
LPRINT "Nom du fichier:";nom_prog$
LPRINT "Nb lignes:";nbe_lignes$,"Nb octets:";nbe_octets$
LPRINT
y=0
i=1
x=1
p=1
bouc:
a$=""
REPEAT
REPEAT
IF MID$(programme$,i,1)<>CHR$(10) AND MID$(programme$,i,1)<>CHR$(13)
a$=a$+MID$(programme$,i,1)
ELSE IF MID$(programme$,i,1)=CHR$(13)
i=i+1
x=79
ENDIF
x=x+1
i=i+1
UNTIL x=80 OR i>=LEN(programme$)
x=1
LPRINT a$
y=y+1
a$=""
UNTIL y=57 OR i>=LEN(programme$)
p=p+1
LPRINT
LPRINT "Page No";p
IF i>=LEN(programme$) AND y<57
LPRINT " ******** FIN ********"
ELSE
y=0
ALERT 0," Changement de page ",1," OK ",choix%
GOTO bouc
ENDIF
ENDIF
RETURN
'
> PROCEDURE charge_prog
@info_memoire
statut$="Chargement programme"
@aff_som
@affiche_info
CLR programme$,nbe_lignes$,nbe_octets$
'
IF prog$=""
prog$="CASIO.CAS"
ENDIF
FILESELECT chemin$,prog$,nom_prog$
@test_nom_prog
'
IF (NOT erreur!) AND EXIST(nom_prog$)
OPEN "i",#1,nom_prog$
REPEAT
LINE INPUT #1,a$
programme$=programme$+CHR$(13)+CHR$(10)+a$
UNTIL EOF(#1)
CLOSE #1
programme$=programme$+CHR$(13)+CHR$(10)
x=0
FOR i%=1 TO LEN(programme$)
IF MID$(programme$,i%,1)=CHR$(10)
x=x+1
nbe_lignes$=STR$(VAL(nbe_lignes$)+1)
ENDIF
NEXT i%
nbe_octets$=STR$(LEN(programme$))
@affiche_info
ENDIF
RETURN
'
> PROCEDURE sauve_prog
@info_memoire
statut$="Sauvegarde programme"
@aff_som
@affiche_info
'
FILESELECT chemin$,prog$,nom_prog$
@test_nom_prog
'
IF NOT erreur!
OPEN "o",#1,nom_prog$
PRINT #1,programme$
CLOSE #1
ENDIF
@affiche_info
RETURN
'
> PROCEDURE fin
ALERT 2,"|Retour au GEM",1," OUI | NON ",ret%
IF ret%=1
fin!=TRUE
' On remet l'ancien Tampon
xbios14in(initin%,longin%)
xbios14out(initout%,longout%)
' On fait les Mfree
~GEMDOS(&H49,L:xxxin%)
~GEMDOS(&H49,L:xxxout%)
a=MFREE(adr_doc)
a=MFREE(adr_som)
' RESERVE
ELSE
fin!=FALSE
ENDIF
RETURN
'
> PROCEDURE aide
@aff_doc
TEXT 365,180,"- transfert Casio Atari"
TEXT 365,180+15,"- sauvegarde sur disque"
TEXT 365,180+15*2,"- impression listing"
DEFTEXT 1,1,0,13
TEXT 365,180+15*4,"Programme en ShareWare !"
DEFTEXT 1,0,0,13
TEXT 365,180+15*5,"Merci d'envoyer un chque"
TEXT 365,180+15*6,"de 50 Frs :"
DEFTEXT 1,1,0,6
TEXT 370,180+15*7,"William Saint-Cricq"
TEXT 370,180+15*7+9,"9 Rsidence Bel Air"
TEXT 370,180+15*7+9*2,"65000 TARBES"
DEFTEXT 1,0,0,4
TEXT 370,180+15*7+9*3,"CCP 2502 C Toulouse"
TEXT 50,180+18*7,"Un grand merci "
TEXT 50,180+18*7+9,"THE HOBBIT pour son aide."
TEXT 50,180+18*7+9*3,"Un kiss ma bien ame Marie."
DEFTEXT 1,0,0,13
TEXT 250,393,"Tapez sur une touche"
REPEAT
UNTIL INKEY$<>""
@aff_som
@affiche_info
RETURN
'
> PROCEDURE affiche_prog
LOCAL a$,y,i,x,j
y=0
i=1
x=1
@fenetre("Tapez sur ESC pour sortir | RETURN pour la suite","Nb octets:"+nbe_octets$+" | Nb lignes:"+nbe_lignes$)
boucle:
a$=""
REPEAT
REPEAT
IF MID$(programme$,i,1)<>CHR$(10) AND MID$(programme$,i,1)<>CHR$(13)
IF MID$(programme$,i,1)=>" "
a$=a$+MID$(programme$,i,1)
ELSE
a$=a$+" "
ENDIF
ELSE IF MID$(programme$,i,1)=CHR$(13)
i=i+1
x=66
ENDIF
x=x+1
i=i+1
UNTIL x=67 OR i>=LEN(programme$)
x=1
PRINT AT(7,6+y);a$
y=y+1
a$=""
UNTIL y=16 OR i>=LEN(programme$)
IF i>LEN(programme$) AND y<16
PRINT AT(7,6+y+1);" ******** FIN ********"
ENDIF
boucle2:
a$=INKEY$
IF a$=CHR$(13) AND i<LEN(programme$)
y=0
DEFFILL 1,0
BOUNDARY 0
PBOX 49,79,583,343
GOTO boucle
ENDIF
IF a$<>CHR$(&H1B)
GOTO boucle2
ENDIF
RETURN
'
' ********************** divers
> PROCEDURE test_nom_prog
CLR erreur!
IF nom_prog$="" OR nom_prog$="\"
erreur!=TRUE
ELSE
prog$=RIGHT$(nom_prog$,12)
CLR a$
FOR i%=1 TO LEN(prog$)
a$=MID$(prog$,i%,1)
EXIT IF a$="\"
NEXT i%
IF i%<LEN(prog$)
prog$=MID$(prog$,i%+1)
ENDIF
erreur!=FALSE
chemin$=MID$(nom_prog$,1,LEN(nom_prog$)-LEN(prog$))+"*.*"
ENDIF
RETURN
> PROCEDURE fenetre(titre$,info$)
CLS
@aff_doc
DEFFILL 1,2,2
PBOX 25,7,609,43
DEFFILL 1,0
BOUNDARY 0
PBOX 49,79,583,343
PBOX 30,12,604,38
BOUNDARY 1
DEFFILL 1,2,8
PBOX 40,45,595,70
DEFFILL 1,0
PBOX 40,45,593,68
TEXT 37,30,560,titre$
TEXT 50,62,535,info$
RETURN
'
'
'
'